package com.ziyun.pop.modules.order.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ziyun.pop.modules.order.entity.OrderInfoEntity;
import com.ziyun.pop.modules.order.entity.OrderInfoVo;
import com.ziyun.pop.modules.order.vo.FactoryOrderVo;
import com.ziyun.pop.modules.supp.vo.SellerCustomerApiVo;
import com.ziyun.pop.modules.supp.vo.SellerOrderApiVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 订单基础信息表
 * 
 * @author guizhao
 * @email ...
 * @date 2018-08-03 10:40:47
 */
@Service("erpOrderInfoDao")
public interface ErpOrderInfoDao extends BaseMapper<OrderInfoEntity> {

    /**
     * 查询销售订单数据总数
     * @param map 查询参数
     * @return
     */
    int countOrder(@Param("map") Map<String, Object> map);

    /**
     * 查询商城订单数据总数
     * @param map 查询参数
     * @return
     */
    int countMallOrder(@Param("map") Map<String, Object> map);

    /**
     *  查询订单列表
     * @param map 查询参数
     * @return
     */
    List<OrderInfoVo> queryPageOrderList(@Param("map") Map<String, Object> map);

    /**
     * 查询订单详情
     * @param orderId 订单号
     * @return
     */
    OrderInfoVo selectOrderInfoVoById(@Param("orderId") Long orderId);

    /**
     *  订单数据更新
     * @param orderId 订单号
     * @param map 修改参数
     * @return
     */
    int updateByMap(@Param("orderId") String orderId, @Param("map") Map<String, Object> map);

    //List<OrderInfoEntity> selectNotSynZiyunOrderList(Pagination page, String startTime);

    List<OrderInfoEntity> selectPayChangeZiyunOrderPage(Page<OrderInfoEntity> page);

    List<OrderInfoEntity> selectReceiveChangeZiyunOrderPage(Page<OrderInfoEntity> page);

    List<OrderInfoEntity> selectCancleChangeZiyunOrderPage(Page<OrderInfoEntity> page);

    List<OrderInfoEntity> selectNotPayZiyunOrderPage(@Param("page") Page<OrderInfoEntity> page, @Param("day") Integer day, @Param("promotionType") String promotionType);

    List<OrderInfoVo> queryPageMallOrderList(@Param("map") Map<String, Object> params);

    /**
     * 工厂订单查询（卖家）
     * @param map
     * @return
     */
    List<FactoryOrderVo> queryPageSellerFactoryOrderList(@Param("map") Map<String, Object> map);

    /**
     * 工厂订单查询（卖家）
     * @param map
     * @return
     */
    int countSellerFactoryOrder(@Param("map") Map<String, Object> map);

    /**
     * 工厂订单查询（买家）
     * @param map
     * @return
     */
    List<FactoryOrderVo> queryPageBuyerFactoryOrderList(@Param("map") Map<String, Object> map);

    /**
     * 工厂订单查询（买家）
     * @param map
     * @return
     */
    int countBuyerFactoryOrder(@Param("map") Map<String, Object> map);

    /**
     * 工厂订单单个查询
     * @param orderId
     * @return
     */
    FactoryOrderVo selectFactoryOrdeVoByOrderId(@Param("orderId") String orderId);

    SellerOrderApiVo getSellerOrder(@Param("sellerId") Long sellerId);

    SellerCustomerApiVo getSellerCustomer(@Param("sellerId") Long sellerId);
}
